﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using Modelo;

namespace AccesoDatos
{
    public static class BDListaDiaria
    {
        private static string connect = "Data Source=.\\sqlexpress; Initial Catalog=BitFood; Integrated Security=true";

        public static bool BorrarProductosEnFecha(DateTime fechaComida)
        {
            SqlConnection SQL_conn = null;
            SqlCommand comando = null;
            try
            {
                SQL_conn = new SqlConnection(connect);
                comando = SQL_conn.CreateCommand();
                comando.CommandText = "DELETE FROM ListaDiaria WHERE FechaComida = @comida";
                comando.Parameters.AddWithValue("comida",fechaComida);
                SQL_conn.Open();
                comando.ExecuteNonQuery();
            }
            catch (SqlException)
            {
                return false;
            }
            finally
            {
                if (SQL_conn != null)
                {
                    SQL_conn.Dispose();
                }
            }
            return true;
        }
        public static bool InsertarNuevoProducto(DateTime fechaCompra,string producto, float cantidad, DateTime fechaComida,float precio,string unidad)
        {
            SqlConnection SQL_conn = null;
            SqlCommand comando = null;
            try
            {
                SQL_conn = new SqlConnection(connect);
                comando = SQL_conn.CreateCommand();
                comando.CommandText = "INSERT INTO ListaDiaria (FechaCompra,Producto,Cantidad,FechaComida,UnidadDeMedida,Precio) VALUES (@fechaCompra,@producto,@cantidad,@fechaComida,@unidad,@precio)";
                comando.Parameters.AddWithValue("fechaCompra",fechaCompra);
                comando.Parameters.AddWithValue("fechaComida", fechaComida);
                comando.Parameters.AddWithValue("producto", producto);
                comando.Parameters.AddWithValue("cantidad", cantidad);
                comando.Parameters.AddWithValue("unidad", unidad);
                comando.Parameters.AddWithValue("precio", precio);
                SQL_conn.Open();
                comando.ExecuteNonQuery();
            }
            catch (SqlException)
            {
                return false;
            }
            finally
            {
                if (SQL_conn != null)
                {
                    SQL_conn.Dispose();
                }
            }
            return true;
        }
        public static List<ProductoDiario> ObtenerProducto(DateTime fecha)
        {
            SqlConnection SQL_con = null;
            SqlCommand comando = null;
            SqlDataReader reader = null;
            ProductoDiario productoDiario = null;
            List<ProductoDiario> lista = null;
            try
            {
                SQL_con = new SqlConnection(connect);
                comando = SQL_con.CreateCommand();
                comando.CommandText = "SELECT * FROM ListaDiaria WHERE FechaCompra = @fecha";
                comando.Parameters.AddWithValue("fecha", fecha);
                SQL_con.Open();
                reader = comando.ExecuteReader();
                if (reader.HasRows)
                {
                    lista = new List<ProductoDiario>();
                    while (reader.Read())
                    {
                        productoDiario = new ProductoDiario();
                        productoDiario.FechaCompra = (DateTime)reader["FechaCompra"];
                        productoDiario.Cantidad = float.Parse(reader["Cantidad"].ToString());
                        productoDiario.FechaComida = (DateTime)reader["FechaComida"];
                        productoDiario.Nombre = reader["Producto"].ToString();
                        productoDiario.Medida = reader["UnidadDeMedida"].ToString();
                        productoDiario.Precio = float.Parse(reader["Precio"].ToString());
                        lista.Add(productoDiario);
                    }
                    
                }
            }
            catch (SqlException)
            {
                return null;
            }
            finally
            {
                if (SQL_con != null)
                {
                    SQL_con.Dispose();
                }
            }
            return lista;
        }
    }
}
